import "mod_say";
/*

	func.prg
	Definicion de funciones comunes a varios procesos
	
*/
CONST

	// cantidad de textos visibles por printf
	textDebugMax = 30;	

	// formatos de printf
	_NORMAL 	= 0;
	_ERROR 		= 1;
	_OK 		= 2;
	_IMPORTANT 	= 3;
END


GLOBAL
	//variable texto "consola"
	textDebug = -1;		// numero del texto (para arrancar en el 0)
	textDebugID[textDebugMax];	// ids de todos los textos escritos
END

/* ***************************************************************************** */

FUNCTION print(string text)
// llama a la funcion printf con color _NORMAL
BEGIN
	printf(text, _NORMAL);
END

/* ***************************************************************************** */

FUNCTION  printf(string text, int format)
//"consolita", mandas un text de parametro y lo imprime al costado de la pantalla
PRIVATE
	int color;
END
BEGIN

	// solo se ejecuta si esta en modo debug
	IF ( DEBUGMODE )
		
		textDebug++;

		// establece los los colores
		SWITCH ( format )
			CASE _NORMAL:
				color = rgb(255,255,255);
			END
			CASE _ERROR:
				color = rgb(180,0,0);
			END
			CASE _OK:
				color = rgb(0,100,0);
			END
			CASE _IMPORTANT:
				color = rgb(255,255,0);
			END
		END
		// cambia el color de escritura
		set_text_color(color);
		
	

		// limpia la pantalla al llegar al maximo
		IF(textDebug >= textDebugMax)
			for ( textDebug = 0; textDebug < textDebugMax; textDebug++ )
				if ( textDebugID[textDebug] <> 0 )
					delete_text( textDebugID[textDebug] );
				end
			end
			textDebug = 0;
		END
		

		// imprime el textoguardando su id
		textDebugID[textDebug] = write(0, SCREEN_X - 10, textDebug * 10, 2, text);
		say(text);
		
		// restablece el color de escritura
		set_text_color(rgb(255,255,255));
		
	END
	
	return 0;
	
END

/* ********* */
PROCESS resolveDirection(_vector3D vector1, _vector3D vector2, _vector3D* currentDirection)
BEGIN
	(*currentDirection).varX = vector1.varX  + vector2.varX;
	(*currentDirection).varY = vector1.varY  + vector2.varY;
	(*currentDirection).varZ = vector1.varZ  + vector2.varZ;
	//print(Itoa(res.varX));
	//print(Itoa(res.varY));
END



